package com.yfp.operation.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yfp.operation.domain.ClientCoupon;
import com.yfp.operation.domain.MarActivity;
import com.yfp.operation.domain.dto.ActivityDTO;
import com.yfp.operation.domain.dto.InviteRecordDTO;
import com.yfp.operation.domain.dto.ParticipationDTO;
import com.yfp.operation.domain.vo.ActivityVO;
import com.yfp.operation.domain.vo.InviteRecordVO;
import com.yfp.operation.domain.vo.ParticipationDetailVO;

import java.util.List;

/**
 *
 * @description 针对表【mar_activity(活动)】的数据库操作Service
 * @createDate 2024-07-16 16:11:30
 */
public interface MarActivityService extends IService<MarActivity> {

    /**
     * 新增
     *
     * @param marActivity
     */
    void add(MarActivity marActivity);

    /**
     * 活动列表
     *
     * @param activityDTO
     * @return
     */
    List<ActivityVO> selectMarActivity(ActivityDTO activityDTO);

    /**
     * 活动列表数据补全
     *
     * @param list
     * @return
     */
    List<ActivityVO> complement(List<ActivityVO> list);

    /**
     * 邀请列表
     *
     * @param inviteRecordDTO
     * @return
     */
    List<InviteRecordVO> inviteRecord(InviteRecordDTO inviteRecordDTO);

    /**
     * 邀请列表数据补全
     *
     * @param inviteRecordVOS
     * @return
     */
    List<InviteRecordVO> invitecomplement(List<InviteRecordVO> inviteRecordVOS);

    /**
     * 参与详情
     *
     * @param participationDTO
     * @return
     */
    List<ParticipationDetailVO> participation(ParticipationDTO participationDTO);

    /**
     * 查看参加活动获得奖励
     * @param participationDTO
     * @return
     */
    List<ClientCoupon> findActivityAward(ParticipationDTO participationDTO);

    /**
     * 根据id获取活动详情
     *
     * @param marActivityId
     * @return
     */
    MarActivity selectById(Long marActivityId);

    /**
     * 修改状态
     *
     * @param marActivityId
     * @param status
     */
    void updateStatus(Long marActivityId, Integer status);

    /**
     * 调用存储过程
     */
    void callUpdateMarActivityStatus();

    /**
     * 邀请有礼活动-发放优惠券
     *
     * @param passiveClientId 被邀请人id
     */
    void issueInviteCoupon(String passiveClientId) throws InterruptedException;

    /**
     * 修改活动
     * @param marActivity
     */
    void updateActivity(MarActivity marActivity);
}
